编译RT

您所在的位置:网站首页 linux实时性测试 centos 编译RT

编译RT

2023-11-10 12:18| 来源: 网络整理| 查看: 265

        当事件发生时,系统响应该事件的时间即为延时。         延时在不同的上下文有不同的含义,而cyclictest所测得的延时是中断延时加调度延时,如下图。中断延时(interrupt latency),即中断发生到进入中断处理程序ISR的延时。调度延时(scheduling latency),即当任务被唤醒到任务真正获得CPU使用权中间的延时。  

cyclictest原理:

        通过启动一个master的普通进程,然后master进程再启动指定数量指定优先级的实时进程,实时进程会设置一个timer周期性的唤醒自己(从timer溢出触发中断并进入ISR调用wake_up_process()唤醒实时进程,到进程真正能被运行,这中间的时间即我们需要测量的延时)。实时进程得到运行后会再次获取当前系统时间,减去睡眠时间时的时间以及睡眠的时间即可得到延时时间,并通过共享内存将该值传递给master进程进行统计,如此周而复始,最终由master进程将结果输出。

注意:当造成延时的事件发生在timer溢出之前,那么这样的延时将不会被捕捉到,所以我们需要足够久的运行cyclictest才能更大概率的抓取全面的延时数据。

        运行cyclictest前,我们有几点需要注意的地方。首先是短时间的运行cyclictest得出的结果是无意义的,再就是测试系统上没有合适负载的情况下运行cyslictest所得到的延时统计也是无意义的。所以我们最好在待测系统上模拟出负载并运行cyclictest大于24小时统计出延时。

1,下载源码

        git clone git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git         git checkout origin/stable/v1.0

2,交叉编译

        修改Makefile中的编译器

        CC = arm-linux-gnueabihf-gcc         AR = arm-linux-gnueabihf-ar

        执行make

        如果报错: src/cyclictest/rt_numa.h:29:18: fatal error: numa.h: 没有那个文件或目录

                1)安装apt-file 来找到依赖库

                    apt-get install apt-file                     apt-file update #更新源

                2)寻找 numa.h

                    apt-file install numa.h

                3) 安装相应的库

                    apt-get install libnuma-dev

3,运行cyclictest程序进行实时性测试:

        cyclictest -t 5 -p 80 -n

4,cyclictest运行结果详解

T: 0 序号为0的线程 P: 0 线程优先级为0 C: 9397 计数器。线程的时间间隔每达到一次,计数器加1 I: 1000 时间间隔为1000微秒(us) Min: 最小延时(us) Act: 最近一次的延时(us) Avg:平均延时(us) Max: 最大延时(us)

参考链接:实时性测试:cyclictest详解 - 知乎



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3